---
displayed_sidebar: "Chinese"
---

# str_to_date

## 功能

按照 `format` 指定的格式将 `str` 转换为 DATETIME 类型的值。如果转换结果有误，则返回 NULL。该函数与 [date_format](./date_format.md) 函数功能相反。

## 语法

```Haskell
DATETIME STR_TO_DATE(VARCHAR str, VARCHAR format)
```

## 参数说明

`str`: 要转换的时间字符串，支持的数据类型为 VARCHAR。

`format`: 指定的时间格式，支持的数据类型为 VARCHAR。支持的时间格式与 [date_format](./date_format.md) 函数一致。

## 返回值说明

返回 DATETIME 类型的值。如果 `format` 指定的格式为日期，则返回 DATE 类型的值。

如果 `str` 或 `format` 为 NULL，则返回 NULL。

## 示例

示例一：将输入值转换为 DATETIME 类型的日期时间。

```Plain
select str_to_date('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s');
+---------------------------------------------------------+
| str_to_date('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s') |
+---------------------------------------------------------+
| 2014-12-21 12:34:56                                     |
+---------------------------------------------------------+
```

示例二：将输入值转换为 DATE 类型的日期。

```Plain
SELECT STR_TO_DATE('20141221','%Y%m%d');
+-----------------------------------+
| str_to_date('20141221', '%Y%m%d') |
+-----------------------------------+
| 2014-12-21                        |
+-----------------------------------+
```

示例三：将 2004 年第 42 周的星期一 (`200442 Monday`) 转换为日期。

```Plain
select str_to_date('200442 Monday', '%X%V %W');
+-----------------------------------------+
| str_to_date('200442 Monday', '%X%V %W') |
+-----------------------------------------+
| 2004-10-18                              |
+-----------------------------------------+
```
